package vista.Menu;

import java.awt.Graphics;
import controlador.ControladorMenu;
import modelo.Orientacion.AreaRectangular;
import modelo.Orientacion.Posicion;
import titiritero.MouseClickObservador;
import titiritero.SuperficieDeDibujo;
import titiritero.vista.ImagenRectangular;

public abstract class VistaMenu extends ImagenRectangular implements MouseClickObservador {
	
	private ImagenRectangular imgBtn1;
	private ImagenRectangular imgBtn2;
	protected ControladorMenu controladorMenu;
	private boolean visible;

	//Pre: -
	//Pos: Se crea una instancia de MenuPrincipal como imagenRectangular en las posiciones x e y
	//Pos2:  Se setea el controladorMenu. Se presenta Visible. Setea las posiciones de los dos botones del menu.
	public VistaMenu(int x, int y, ControladorMenu controladorMenu) {
		super(x,y);
		this.controladorMenu = controladorMenu;
		this.imgBtn1 = new ImagenRectangular(327, 209);
		this.imgBtn2 = new ImagenRectangular(77, 353);
		visible(true);
	}

	
	public void setArchivoImagenBoton1(String unNombre){
		this.imgBtn1.setNombreArchivoImagen(unNombre);
	}
	

	public void setArchivoImagenBoton2(String unNombre){
		this.imgBtn2.setNombreArchivoImagen(unNombre);
	}
	
	public void setArchivoImagenFondo(String unNombre){
		this.setNombreArchivoImagen(unNombre);
	}
	
	
	
        @Override
	public void dibujar(SuperficieDeDibujo superficeDeDibujo) {
		Graphics grafico = (Graphics)superficeDeDibujo.getBuffer();
		grafico.drawImage(this.getImagen(), 0, 0, null);
		grafico.drawImage(this.imgBtn1.getImagen(), this.imgBtn1.getX(), this.imgBtn1.getY(), null);
		grafico.drawImage(this.imgBtn2.getImagen(), this.imgBtn2.getX(), this.imgBtn2.getY(), null);
	}
	
	
	

    	public void boton1Click() {
    		this.controladorMenu.cerrarMenu();
    	}


    	public void boton2Click() {
    		System.exit(0);
    	}

	@Override
	//Pre: Se debe haber creado una instancia de VistaMenu
	//Pos: En caso de haber sido clickeado alguna de las imagenes-boton, se procede a llamar al metodo correspondiente
	public void MouseClick(int x, int y) {
		
		if(this.estaVisible())
		{
			Posicion posAreaBtn1 = new Posicion(imgBtn1.getX()+imgBtn1.getImagen().getWidth()/2,imgBtn1.getY()+imgBtn1.getImagen().getHeight()/2);
			Posicion posAreaBtn2 = new Posicion(imgBtn2.getX()+imgBtn2.getImagen().getWidth()/2,imgBtn2.getY()+imgBtn2.getImagen().getHeight()/2);
            AreaRectangular areaBtn1 = new AreaRectangular(270, 180);
			AreaRectangular areaBtn2 = new AreaRectangular(100, 100);
			
			if( areaBtn1.esEstaUnaDeTusPosiciones(posAreaBtn1, new Posicion(x,y)))
			{
				this.boton1Click();
				visible(false);
				
			}
	
			if( areaBtn2.esEstaUnaDeTusPosiciones(posAreaBtn2, new Posicion(x,y))){
				this.boton2Click();
				visible(false);
			}

		}		
	}

	public void visible(boolean estaVisible){
		this.visible = estaVisible;
	}

	private boolean estaVisible() {
		return this.visible;
	}

	

}